package co.inventario.presentacion;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import co.inventario.entidad.MovimientoKardexDTO;
import co.inventario.modelo.fachada.MovimientoKardexFachada;

@ManagedBean
public class MovimientoKardexBean {

	private MovimientoKardexDTO movimientoKardexDTO;
	private ArrayList<MovimientoKardexDTO> movimientoKardexDTOlista;
	private List<MovimientoKardexDTO> movimientoKardexDTOfilter;

	public MovimientoKardexDTO getMovimientoKardexDTO() {
		return movimientoKardexDTO;
	}

	public void setMovimientoKardexDTO(MovimientoKardexDTO movimientoKardexDTO) {
		this.movimientoKardexDTO = movimientoKardexDTO;
	}

	public ArrayList<MovimientoKardexDTO> getMovimientoKardexDTOlista() {
		return movimientoKardexDTOlista;
	}

	public void setMovimientoKardexDTOlista(ArrayList<MovimientoKardexDTO> movimientoKardexDTOlista) {
		this.movimientoKardexDTOlista = movimientoKardexDTOlista;
	}

	public List<MovimientoKardexDTO> getMovimientoKardexDTOfilter() {
		return movimientoKardexDTOfilter;
	}

	public void setMovimientoKardexDTOfilter(List<MovimientoKardexDTO> movimientoKardexDTOfilter) {
		this.movimientoKardexDTOfilter = movimientoKardexDTOfilter;
	}

	private void refrescartablaMovimiento() {
		try {
			MovimientoKardexFachada movimientoKardexFachada = new MovimientoKardexFachada();
			movimientoKardexDTOlista = movimientoKardexFachada.consultarTodo();
		} catch (Exception exception) {
			System.out.println("Error producido refrescando la tabla movimiento: " + exception.getMessage());
		}
	}

	public MovimientoKardexBean() {
		movimientoKardexDTO = new MovimientoKardexDTO();
		refrescartablaMovimiento();
	}

	public void crear() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			if (movimientoKardexDTO.getNvNombreMovimiento() == null || "".equals(movimientoKardexDTO.getNvNombreMovimiento().trim())) {
				context.addMessage(null, new FacesMessage("Error ", "El campo nombre no puede estar vacio."));
			} else {
				MovimientoKardexFachada movimientoKardexFachada = new MovimientoKardexFachada();
				movimientoKardexFachada.crear(movimientoKardexDTO);
				refrescartablaMovimiento();
				context.addMessage(null, new FacesMessage("Correcto", "el registro se ha creado con exito."));
			}
		} catch (Exception exception) {
			context.addMessage(null, new FacesMessage("Error", "Se ha producido un error al crear el registro: " + exception.getMessage()));
		}
	}

	public void actualizar() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			if (movimientoKardexDTO.getNvNombreMovimiento() == null || "".equals(movimientoKardexDTO.getNvNombreMovimiento().trim())) {
				context.addMessage(null, new FacesMessage("Error ", "El campo nombre no puede estar vacio."));
			} else {
				MovimientoKardexFachada movimientoKardexFachada = new MovimientoKardexFachada();
				movimientoKardexFachada.actualizar(movimientoKardexDTO);
				refrescartablaMovimiento();
				context.addMessage(null, new FacesMessage("Correcto", "el registro se ha creado con exito."));
			}
		} catch (Exception exception) {
			context.addMessage(null, new FacesMessage("Error", "Se ha producido un error al actualizar el registro: " + exception.getMessage()));
		}
	}

	public void consultarTodo() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			refrescartablaMovimiento();
		} catch (Exception excepcion) {
			context.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}
}
